package com.jd.scaffold.common.entity;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 
 * 描述:分页信息
 * <p>创建人：jrzhangwei 创建日期：2014年7月10日 </p>
 * @version V1.0
 */
@SuppressWarnings("rawtypes")
public class Pagination<P> implements Serializable {
	
	private static final long serialVersionUID = -681184866199665872L;

	/**
     * 默认分页大小
     */
    public static final int DEFAULT_PAGE_SIZE = 20;

    /**
     * 默认页码
     */
    public static final int DEFAULT_PAGE_NUM = 1;

    /**
     * 分页大小
     */
    private int pageSize;

    /**
     * 当前分页号
     */
    private int pageNum;

    /**
     * 总记录数
     */
    private int totalCount;

    /**
     * 总页数
     */
    private int pageCount;

    /**
     * 查询结果数据
     */
    private List<P> datas = null;
    
    /**
     * 汇总结果信息
     */
    private Map sumResultMap;

    /**
     * 分页构造方法
     * jrzhangwei 2014年7月10日 上午9:39:47
     * @param pageSize 分页大小
     * @param pageNum  分页页码
     * @param totalCount 总记录数
     * @param datas     分页数据信息
     */
    public Pagination(int pageSize, int pageNum, int totalCount, List<P> datas) {
        this.pageSize = pageSize;
        this.pageNum = pageNum;
        this.totalCount = totalCount;
        this.datas = datas;
        if (this.pageSize == 0) {
            pageCount = 0;
        } else if (this.totalCount % this.pageSize == 0) {
            pageCount = this.totalCount / this.pageSize;
        } else {
            pageCount = totalCount / this.pageSize + 1;
        }
    }
    
    /**
     * 分页构造方法
     * jrzhangwei 2014年7月10日 上午9:39:47
     * @param pageSize 分页大小
     * @param pageNum  分页页码
     * @param totalCount 总记录数
     * @param datas     分页数据信息
     */
	public Pagination(int pageSize, int pageNum, int totalCount,Map sumResultMap, List<P> datas) {
        this.pageSize = pageSize;
        this.pageNum = pageNum;
        this.totalCount = totalCount;
        this.datas = datas;
        this.sumResultMap = sumResultMap;
        if (this.pageSize == 0) {
            pageCount = 0;
        } else if (this.totalCount % this.pageSize == 0) {
            pageCount = this.totalCount / this.pageSize;
        } else {
            pageCount = totalCount / this.pageSize + 1;
        }
    }

	/**
	 * 获取分页大小
	 * @return pageSize 分页大小
	 */
	public int getPageSize() {
		return pageSize;
	}

	/**
	 * 获取当前分页号
	 * @return pageNum 当前分页号
	 */
	public int getPageNum() {
		return pageNum;
	}

	/**
	 * 获取总记录数
	 * @return totalCount 总记录数
	 */
	public int getTotalCount() {
		return totalCount;
	}

	/**
	 * 获取总页数
	 * @return pageCount 总页数
	 */
	public int getPageCount() {
		return pageCount;
	}

	/**
	 * 获取查询结果数据
	 * @return datas 查询结果数据
	 */
	public List<P> getDatas() {
		return datas;
	}

	/**
	 * 获取汇总结果信息
	 * @return sumResultMap 汇总结果信息
	 */
	public Map getSumResultMap() {
		return sumResultMap;
	}
	
}
